অ্যাপাচি HTTP ক্লায়েন্ট (Apache HTTP Client) একটি শক্তিশালী লাইব্রেরি যা Java পরিবেশে HTTP অনুরোধ (HTTP Request) এবং প্রতিক্রিয়া (HTTP Response) পরিচালনা করতে ব্যবহৃত হয়। বড় ফাইল ডাউনলোড বা আপলোডের ক্ষেত্রে একবারে সম্পূর্ণ কনটেন্ট মেমোরিতে না লোড করে স্ট্রিমিং (Streaming) উপায়ে ডেটা হ্যান্ডলিং করতে পারলে সিস্টেমের উপর চাপ কমে এবং পারফরম্যান্স উন্নত হয়।
Streaming API এর মূল ধারণা
স্ট্রিমিং API ব্যবহার করে বড় ফাইল আংশিকভাবে পড়া (read) বা লেখা (write) সম্ভব। অর্থাৎ কনটেন্ট (Content) ধাপে ধাপে সংগ্রহ করা যায়, যাতে অ্যাপ্লিকেশন মেমোরি (Application Memory) অতিরিক্ত ব্যবহৃত না হয়। Apache HTTP Client এর CloseableHttpResponse অবজেক্ট ব্যবহার করে InputStream এর মাধ্যমে ডেটা পড়া যাবে এবং প্রয়োজনে আউটপুট স্ট্রীমের (OutputStream) সাথে সংযুক্ত করা যাবে।
এই উদাহরণে HttpClientBuilder দিয়ে ক্লায়েন্ট তৈরি করে একটি GET রিকোয়েস্ট (GET Request) পাঠানো হবে, এবং রেসপন্সের (Response) InputStream থেকে ডেটা পড়ে লম্বা ফাইল সিস্টেমে লেখা হবে:
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
HttpGet request = new HttpGet("http://example.com/largefile.zip");
try (CloseableHttpResponse response = httpClient.execute(request)) {
HttpEntity entity = response.getEntity();
if (entity != null) {
try (InputStream in = entity.getContent();
FileOutputStream out = new FileOutputStream("largefile.zip")) {
byte[] buffer = new byte[8192];
int bytesRead;
while ((bytesRead = in.read(buffer)) != -1) {
out.write(buffer, 0, bytesRead);
}
}
}
}
সারাংশ: অ্যাপাচি HTTP ক্লায়েন্টের স্ট্রিমিং API ব্যবহার করে বড় ফাইল ডাউনলোড বা আপলোডের ক্ষেত্রে মেমোরি ব্যবহারের অপটিমাইজেশন এবং পারফরম্যান্স উন্নত করা সম্ভব।
common.read_more